A plurality of different source end nodes transmit packets onto a computer network. A “flow” of packets is identified by contents of fields in the packet, for example by the Layer 3 source address, destination address, protocol type field, etc. Flows are also identified by internal parameters of the router, for example input port and output port. Different types of flows may be identified by choosing different combinations of fields to identify the flow, including fields from the layer 2 header, the layer 3 header, the layer 4 header, etc.
When a destination end node receives a packet from the network, the destination end node ordinarily communicates with the source end node in order to let the source end node know that the packet was received. For example, in the TCP/IP unicast protocol the destination end node transmits an acknowledgement message (ACK) to the source end node indicating that a packet was received. Until the ACK is received, the source end node keeps a copy of the transmitted packet in memory so that the packet can be resent in the event that no ACK is received after expiration of a re-transmit time period.
TCP/IP is an “adaptive flow” protocol. By an “adaptive flow” it is meant that, in the event that no ACK indications are received for a packet, or for a plurality of packets, an adaptive transmitter slows down its rate of transmission for that flow. One method of regulating a transmission rate of packets is the use of a sliding window, as is implemented in the TCP/IP protocol. TCP/IP slows down the rate of packet transmission by reducing the number of packets transmitted during a window opportunity, and thereby places a longer average time interval between the transmitted packets. In common implementations of TCP/IP, the window width is divided by two (2) each time that the retransmit timer times out. Also, typically, the retransmit time interval is doubled upon a timeout event. Later, as packets are received by the destination station and ACK messages are received by the source station, the source station then slowly increases its window width, and the retransmit timer timeout interval is shortened. This dynamic behavior adjusts the transmission rate and retransmit timer timeout interval to network parameters, especially as those parameters change dynamically with time.
Following a reduction in transmission rate, and after receiving a plurality of ACK indications that its packets are now being received by the destination end station, the adaptive transmitter, using TCP/IP or some other adaptive protocol, begins slowly increasing its transmission rate until the rate is back up to the maximum transmission rate permitted.
Network devices may typically be a router serving as a node in the network, where the router typically operates by reading and reacting to layer 3 fields read from the packet layer 3 header. Alternatively, the network device may be a layer 2 switch, where the switch reacts to fields read from the packet layer 2 header. Further, some network devices read and react to fields read from the layer 4 header of a packet, etc. All such network devices are subject to congestion when packets arrive at the devices faster than the devices can handle the arriving packets.
Not all transmitting end nodes employ adaptive transmission techniques. An end node which does not adapt is referred to as producing a “non-adaptive” flow. A non-adaptive flow is frequently bad for the computer network, because for flows through a congested network device the adaptive transmitter will reduce its flow rate, however the non-adaptive transmitter will continue to blast packets at the network device without regard to the congestion. The non-adaptive flows then begin to occupy more and more of the bandwidth of the congested network device. That is, the “bad” flows begin to hog more and more of the congested bandwidth of the intermediate node network device.
A method of identifying non-adaptive flows is required in order for a network device to take appropriate action.